{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "import nltk"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "colors = 'rgbcmyk'  # 多种颜色的组合，字符串形式\n",
    "def bar_chart(categories, words, counts):\n",
    "    import pylab\n",
    "    ind = pylab.arange(len(words))\n",
    "    width = 1 / (len(categories))\n",
    "    bar_groups = []\n",
    "    for c in range(len(categories)):\n",
    "        bars = pylab.bar(ind + c * width, counts[categories[c]],\n",
    "                        width, color=colors[c % len(colors)])\n",
    "        bar_groups.append(bars)\n",
    "    pylab.xticks(ind + width, words)\n",
    "    pylab.legend([b[0] for b in bar_groups], categories, loc='upper left')\n",
    "    pylab.ylabel('Frequency')\n",
    "    pylab.title('Frequency of Six Modal Verbs by Genre')\n",
    "    pylab.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEICAYAAACwDehOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZgU5bn38e+PEQUBAdcXRRk0aGTfRSMyahRjoqKJislRjAsaTYwnxiOYRYx6JXkPMSZuEeIWlSOocYnmvNF4gqKgyMQR2dwCKstRRFEBQZb7/aNq2mboYRqY7p4Zfp/r6muqa72rarrueuqpekoRgZmZGUCzUgdgZmYNh5OCmZllOCmYmVmGk4KZmWU4KZiZWYaTgpmZZTgpWKMh6SBJL0v6VNIlWzjtYEmvFSq2LSWpXFJI2iGPcSskLSxSXPWyLElnS3quPmKy4nJSaCAkLZD0maQVWZ+9Sx1XA/MfwOSIaBMRv685UFI3SU9K+kjSckmVko4HiIgpEXHQ1iw03TefS9q9Rv+q9MBevjXzrQ+S5kk6J0f/H0qaUYqYCkHSMZL+kZ4QLEu3/RWSWpQ6tqbGSaFhOSEiWmd9FmcPzOessonrBMzezPC/AE8BewF7ApcAn9TTsucDZ1R/kdQDaFlP894WdwNn5eh/Zjosbw31/0vSqcCDwASgU0TsBpwOdAT2LcDyGuR2KJqI8KcBfIAFwFdz9A/gYuANYH7a7xtAFbAcmAr0zBq/D/BP4FNgInA/cG067GzguRzz/1LavRMwFngHeA/4A9AyHVYBLAQuA94HlgDfzZpPS+A3wNvAx8Bzab8ngB/UWOZMYFgt2+FEkgP/cmAycHDa/3+A9cBqYAVwYI3pdk/XpV0t860AFqbdBwAfAn3T73sDHwAVm9k3PwVeyuo3FvhJuszytF9b4E/A0nQ7/BRolg4rS6f5APhXuk8D2CEd/l1gbrrf/gVckCv2HLF1BNaRHCyr+x0MfJ5uk3z26RXA/wL3ZPW7Mo11AfCdrHkfD8xJ41wE/LiWuM4GngduTP8f5gFHp8NOBSprjH8Z8EiO+Qh4F7isjt9PM2AU8BawDJgE7JoOK0+39Yh0O3wA/CRr2jEkSedekpOI89J9eTvJ//ki4FqgrNTHiWJ8Sh6AP+mO2HxSeArYleQg25fkoHxIeqAZkU67E7BjejD6d6A58C1gLfknhRuAx9JltSE58/5lOqwiPfj8Ip338cAqoH06/GaSg/g+aVyHpTGdBryYtbxe6Y92xxzreiCwEjgmXcZ/AG9Wj5vO/7xatp9IEufjwDBgrxrDK8g6sALnkxyEdwb+Boyta98Ar5EccMvSA1UnNk4KfwIeTbddOfA6cG467EKSA+O+6fb9Bxsnha+TJCsBQ9Jt2zdX7Dniewr4adb3X5IeYPPcp79O91XLrH7Xp/2GpPvkoHSaJcDgtLt9dYw5Yjo7nU/1/+LpJMlh13S+H5Im/HT8l4Fv5pjPl7O38Wa2waXACyRJcifgNuC/0mHl6TzGp+vYC1jDFyccY0h+J8NIkktL4JF0Hq1ISp3TyUrUTflT8gD8SXdEcuBZQXKGvDzrRx3AUVnj3QpcU2Pa19If7xHAYkBZw6aSR1JID0YrgQOyhh3KF6WTCuAz0oNY2u99YFD6Q/oM6JVjvaoPAF3S72OBW2rZBj8DJmV9b0ZyllaRfp9MLUkhHd4RuInkbHED8GzWciuocWAlOVi+SlJy2amOffNVkjP/XwLHkRyId6g+YJEkijVA16zpLiCpA4GkpHNh1rBjyUoKOZb5CPDD2mKvMe6/Aa9lbbN3gJPz3KefAy2yhleQHMxbZfWbBPws7X4nXa9d6vh/PjvH/+J04Mys/+Pr0u5uwEe59gFweLqdsmO8n+Q3siprfnNJSyLp9w4kB/od+CIpdKwRy/C0ewzwbNawvdJ92TKr3xnAP4p1PCjlx3UKDcuwiGiXfoZl9X83q7sTcFlakbpc0nKSs8+908+iSP+LU2/nuew9SM6aK7Pm+//S/tWWRcS6rO+rgNYklylakByMNxIRa0gOKv8mqRnJj+ueWmLYOzveiNhAsu775LMCEbEwIr4fEQeQbKeVJGfvtRkPdAduTOOsyz3At0kOeDXnuztflNSqvZ0V+95svB832i+SvibpBUkfptv++HSe+fgz0EHSIJKD+s4kl+3y2adLI2J1jfl9FBEra8RafdPDN9PY3pb0jKRDNxNXrv/F6vncDXxbkkjqPybVsg+WpX87VPeIiOER0Y7kMmlZ2rsT8HDWes4ludy4V9a8/jeru/p/t1rN31hzYEnW/G4jKTE0eU4KjUP2D+tdkjOsdlmfnSPiv0iK9vukP7Rq+2V1ryQ5SAAg6f9kDfuA5Gy/W9Z820ZE9g+nNh+QXOs/oJbhdwPfAY4GVkXEtFrGW0zyg6yOTyQJb1EeMWwkIt4luaTVPddwSa1JLq3cDoyRtGse83ybpML5eJIDcbYPSM5MO2X12y8r9iVsXCma2S+SdgIeIilF7ZUe8P5KcqZfp4hYRXJN/CySA+z9EfE5+e3T2HSOtJfUqkasi9NlvRQRJ5EcIB8hSfi1yfW/WD2fF0hKKYNJEm1tJwrzSLbhKZtZDiS/i6/V+F20iIh8/3dq/sbWALtnzWuXiOiW57waNSeFxmc8cKGkQ5RoJenrktoA00iK/pdI2kHSKcDArGlfAbpJ6p3eyjemekB6Vj4e+K2kPQEk7SNpaF0BpdPeAVwvaW9JZZIOTQ92pElgA0lFdG0/fkgOMF+XdLSk5iSVj2tILoFtlqT2kq6W9CVJzdLbR88huc6cy+9IKjvPIzmr/kNdy0idS3I5L/tMmohYn8Z/naQ2kjoBPyKpvKxet0skdZTUnqRStNqOJJfZlgLrJH2N5PLSlrib5Lr9N9PubdqnwNWSdpQ0mOTGhgfS79+R1DYi1pJUyq7fzDz2JFnn5ukdRAeTJLtqfyK53LcuInI+05CWNC4DrpJ0frqfJakLG5cC/kCy7Tul67mHpJPyWM9cy1wCPAn8RtIu6f/TAZKGbM38GhsnhUYmImaQVJLeRHId9k2SyxmkZ4enpN8/IjlI/Dlr2tdJKor/TlIpW/OHeEU6vxckfZKOl++9/T8muT7/Ekkdwq/Z+P/rT0APvjhI5lq310iuj99IcpZ7Asltup/nsfzPSa4d/53kYDWLJKGcXXPE9GBxHEnlLyQH776SvlPXQiLirXQf5PIDktLYv0i27QSSZAnJwflvJIn5n2y8Xz4luX12Esl++zZJfceWeJakIndRRLyU1X9r9un/pnEsBu4jqQuZlw47E1iQzutCkv1VmxeBLiT78jrgWxGxLGv4PSQluc2dKBARE0luWPg3krP4D0i21TjggXS035FssyclfUpyMnBIHeu5OWeRJOs5JNviQbIuYTVl2viSnzU1ku4iqaT8aYnjOAsYGRGHlzIOazgktSS5WaFvRLxR6ngs4ZKCFZyknYGLSM7szKp9j+TZDyeEBmT7fnLPCi69fv1nkssWE0ocjjUQkhaQVKQPq2NUKzJfPjIzswxfPjIzs4xGfflo9913j/Ly8lKHYWbWqFRWVn4QEXvkGtaok0J5eTkzZjSZ1oHNzIpCUq0tHRT88lH6INPLkh5Pv+8q6SlJb6R/22eNO1rSm5Jey/MBGzMzq0fFqFP4IUk7JNVGAU9HRBfg6fQ7kroCw0kaxzoOuEVSGWZmVjQFTQqSOpI0CfzHrN4n8cXLP+7mi1vSTiJps2VNRMwneQozu4kGMzMrsELXKdxA0iZ+m6x+e6VtixARS6rbZCFpTTK7nZqF5GgdU9JIYCTAfvvtV3Mwa9euZeHChaxeXbPhRyuGFi1a0LFjR5o3b17qUMxsKxQsKUj6BvB+RFRKqshnkhz9NnmIIiLGkT4Z279//02GL1y4kDZt2lBeXs7GDTRaoUUEy5YtY+HChXTu3LnU4ZjZVijk5aOvACemTy7eDxwl6V7gPUkdANK/76fjL2TjpoU7kjazuyVWr17Nbrvt5oRQApLYbbfdXEoza8QKlhQiYnREdIyIcpIK5P+JiH8jaclwRDraCJLXF5L2Hy5pJ0mdSVpXnL41y3ZCKB1ve7PGrRTPKfwKmCTpXJJX+50KEBGzJU0iaap2HXBx2ka9mZkVSVGSQkRMJnm/Lml76kfXMt51JO2u15/6PnN1W1Fm1oQ16ieazcy2SL4nidvxyZ8bxCuABQsWcPDBB3P++efTrVs3jj32WD777DPeeustjjvuOPr168fgwYOZN28e69evZ//99yciWL58Oc2aNePZZ58FYPDgwbz55ps888wz9O7dm969e9OnTx8+/fTTEq+hmTVVTgoF8sYbb3DxxRcze/Zs2rVrx0MPPcTIkSO58cYbqaysZOzYsVx00UWUlZVx4IEHMmfOHJ577jn69evHlClTWLNmDQsXLuRLX/oSY8eO5eabb6aqqoopU6bQsmXLUq+emTVRvnxUIJ07d6Z3794A9OvXjwULFjB16lROPfXUzDhr1qwBkhLBs88+y/z58xk9ejTjx49nyJAhDBgwAICvfOUr/OhHP+I73/kOp5xyCh07diz+CpnZdsElhQLZaaedMt1lZWV8+OGHtGvXjqqqqsxn7tykSajBgwczZcoUpk+fzvHHH8/y5cuZPHkyRxxxBACjRo3ij3/8I5999hmDBg1i3rx5OZdpZratnBSKZJdddqFz58488MADQPL07yuvvALAIYccwtSpU2nWrBktWrSgd+/e3HbbbQwePBiAt956ix49enDFFVfQv39/JwUzK5imnxQi6vezDe677z5uv/12evXqRbdu3Xj00eS5vZ122ol9992XQYMGAUnJ4dNPP6VHjx4A3HDDDXTv3p1evXrRsmVLvva1r23bNjEzq0Wjfkdz//79o+ZLdubOncvBBx9coogMvA+sAfMtqQBIqoyI/rmGNf2SgpmZ5c1JwczMMpwUzMwsw0nBzMwynBTMzCzDScHMzDKafDMXurp+m86Oq+rvVrXWrVuzYsUKFi9ezCWXXMKDDz642fGPP/54JkyYQLt27eotBjOzbE0+KZRaRBARNGtWe6Fs7733rjMhAPz1r3+tz9DMzDbhy0cFUN109kUXXUTfvn255pprGDBgAD179uSqq67KOX737t0BWLVqFaeddho9e/bk9NNP55BDDqH6Ab3y8nI++OADAK6//nq6d+9O9+7dueGGGzZabs0mu83M8lWwpCCphaTpkl6RNFvS1Wn/MZIWSapKP8dnTTNa0puSXpM0tFCxFcNrr73GWWedxa9//WsWLVrE9OnTqaqqorKyMvO+hFxuueUW2rdvz8yZM/nZz35GZWXlJuNUVlZy55138uKLL/LCCy8wfvx4Xn75ZSB3k91mZvkqZElhDXBURPQCegPHSRqUDvttRPROP38FkNQVGA50A44DbpFUVsD4CqpTp04MGjSIJ598kieffJI+ffrQt29f5s2bxxtvvFHrdM899xzDhw8HoHv37vTs2TPnOCeffDKtWrWidevWnHLKKUyZMgXI3WS3mVm+ClanEEmjSivSr83Tz+ZqaU8C7o+INcB8SW8CA4FphYqxkFq1agUkdQqjR4/mggsuyGu6fNqi2tw4NZvs9uUjM9sSBa1TkFQmqQp4H3gqIl5MB31f0kxJd0hqn/bbB3g3a/KFab+a8xwpaYakGUuXLi1k+PVi6NCh3HHHHaxYkeTHRYsW8f7779c6/uGHH86kSZMAmDNnDq+++uom4xxxxBE88sgjrFq1ipUrV/Lwww9nmtk2M9sWBb37KCLWA70ltQMeltQduBW4hqTUcA3wG+AcINe9o5ucEkfEOGAcJK2k1hlDPd5CujWOPfZY5s6dy6GHHgokt6Hee++97LnnnjnHv+iiixgxYgQ9e/akT58+9OzZk7Zt2240Tt++fTn77LMZOHAgAOeddx59+vTxpSIz22ZFazpb0lXAyogYm9WvHHg8IrpLGg0QEb9Mh/0NGBMRtV4+aopNZ69fv561a9fSokUL3nrrLY4++mhef/11dtxxx1KHlrfGvg+sCXPT2cDmm84uWElB0h7A2ohYLqkl8FXg15I6RMSSdLSTgVlp92PABEnXA3sDXYDphYqvoVq1ahVHHnkka9euJSK49dZbG1VCMLPGrZCXjzoAd6d3EDUDJkXE45LukdSb5NLQAuACgIiYLWkSMAdYB1ycXn7arrRp04aapR8zs2Ip5N1HM4E+OfqfuZlprgOuK1RMZma2eX6i2czMMpwUzMwsw0nBzMwymnxSkOr3k4/sBu7yUVFRkbNyecyYMYwdO3aT/osXL+Zb3/pW3vM3M8tXk08KTVG+TW2bmW0pJ4UCWb9+/SZNWFdVVTFo0CB69uzJySefzEcffZQZ/9577+Wwww6je/fuTJ/+xeMZr7zyCkcddRRdunRh/PjxwMYlkfXr13P55Zdnmua+7bbbAFiyZAlHHHEEvXv3pnv37pkG88zMNsdJoUByNWFd3ZT2zJkz6dGjB1dffXVm/JUrVzJ16lRuueUWzjnnnEz/mTNn8sQTTzBt2jR+8YtfsHjx4o2Wc/vtt9O2bVteeuklXnrpJcaPH8/8+fOZMGECQ4cOpaqqildeeSXTcqqZ2eb4zWsFUrMJ67feeovly5czZMgQAEaMGMGpp56aGf+MM84AksbuPvnkE5YvXw7ASSedRMuWLWnZsiVHHnkk06dP3+gA/+STTzJz5szM5aSPP/6YN954gwEDBnDOOeewdu1ahg0b5qRgZnlxUiiQmk1YVx/ka6MatdjV32vrXy0iuPHGGxk6dNN3Ej377LM88cQTnHnmmVx++eWcddZZW7QOZrb98eWjImnbti3t27fPXNu/5557MqUGgIkTJwLJC3Tatm2baRn10UcfZfXq1SxbtozJkyczYMCAjeY7dOhQbr31VtauXQvA66+/zsqVK3n77bfZc889Of/88zn33HP55z//WYzVNLNGrsmXFBpSY4d33303F154IatWrWL//ffnzjvvzAxr3749hx12GJ988gl33HFHpv/AgQP5+te/zjvvvMPPfvYz9t57742ayD7vvPNYsGABffv2JSLYY489eOSRR5g8eTL/+Z//SfPmzWndujV/+tOfirmqZtZIFa3p7EJoik1nNwXeB9ZguelsYPNNZ/vykZmZZTgpmJlZhpOCmZllOCmYmVmGk4KZmWU4KZiZWUbBnlOQ1AJ4FtgpXc6DEXGVpF2BiUA5yTuaT4uIj9JpRgPnAuuBSyLib9scx+TJ2zqLjURFRb3OrzFasGABU6dO5dvf/napQzGzelbIksIa4KiI6AX0Bo6TNAgYBTwdEV2Ap9PvSOoKDAe6AccBt0gqK2B8TcK6deuKvswFCxYwYcKEoi/XzAqvYEkhEivSr83TTwAnAXen/e8GhqXdJwH3R8SaiJgPvAkMLFR8hXbNNdfw5S9/mWOOOYYzzjiDsWPH5mw6e+7cuQwc+MVqLliwgJ49ewJQWVnJkCFD6NevH0OHDmXJkiVA8lKeK6+8kiFDhvC73/2OiooKrrjiCgYOHMiBBx6YaUrjrrvuYtiwYZxwwgl07tyZm266ieuvv54+ffowaNAgPvzwQwDeeustjjvuOPr168fgwYOZN28eAGeffTaXXHIJhx12GPvvv3+m0b1Ro0YxZcoUevfuzW9/+9uibVMzK7yC1ilIKpNUBbwPPBURLwJ7RcQSgPTvnuno+wDvZk2+MO1Xc54jJc2QNGPp0qWFDH+rzZgxg4ceeoiXX36ZP//5z5m3quVqOvvggw/m888/51//+heQtIF02mmnsXbtWn7wgx/w4IMPUllZyTnnnMNPfvKTzDKWL1/OM888w2WXXQYkJYbp06dzww03bNQk96xZs5gwYQLTp0/nJz/5CTvvvDMvv/wyhx56aKbpi5EjR3LjjTdSWVnJ2LFjueiiizLTL1myhOeee47HH3+cUaNGAfCrX/2KwYMHU1VVxb//+78XdmOaWVEVtO2jiFgP9JbUDnhY0ubeUZnr+fNNnjWPiHHAOEiauaiXQOvZc889l2nyGuCEE05g5cqVtTadfdpppzFp0iRGjRrFxIkTmThxIq+99hqzZs3imGOOAZKX6XTo0CGzjNNPP32jZZ5yyilA0kx3dttIRx55JG3atKFNmza0bduWE044AYAePXowc+ZMVqxYwdSpUzdqxnvNmjWZ7mHDhtGsWTO6du3Ke++9V1+byMwaqKI0iBcRyyVNJqkreE9Sh4hYIqkDSSkCkpLBvlmTdQQ2fqNMI7Gl7UmdfvrpnHrqqZxyyilIokuXLrz66qt069aNadOm5ZymVatWG32vbqq7rKxso3qG7Ca8mzVrlvnerFkz1q1bx4YNG2jXrh1VVVU5l5M9fWNuJ8vM8lOwy0eS9khLCEhqCXwVmAc8BoxIRxsBPJp2PwYMl7STpM5AF2A6jdDhhx/OX/7yF1avXs2KFSt44oknaNWqVa1NZx9wwAGUlZVxzTXXZEoABx10EEuXLs0khbVr1zJ79ux6j3WXXXahc+fOPPDAA0By4H/llVc2O02bNm349NNP6z0WMyu9QpYUOgB3p3cQNQMmRcTjkqYBkySdC7wDnAoQEbMlTQLmAOuAi9PLT9ukFLeQDhgwgBNPPJFevXrRqVMn+vfvT9u2bTfbdPbpp5/O5Zdfzvz58wHYcccdefDBB7nkkkv4+OOPWbduHZdeeindunWr93jvu+8+vve973Httdeydu1ahg8fTq9evWodv2fPnuywww706tWLs88+2/UKZk2Im84ukBUrVtC6dWtWrVrFEUccwbhx4+jbt2+pwyqKhrIPzDbhprOBzTed3eRfslMqI0eOZM6cOaxevZoRI0ZsNwnBzBo3J4UC8cNdZtYYue0jMzPLcFIwM7MMJwUzM8twUjAzs4wmX9E8WZPrdX4VUVEv87nrrruYMWMGN910U73MD9yktZltO5cUmpCtbdJ6/fptfkbQzJoIJ4UCGTZsGP369aNbt26MGzcOgDvvvJMDDzyQIUOG8PzzzwPw8ccfU15ezoYNGwBYtWoV++67L2vXrt3mJq3vuusuvv/972di+sY3vsHk9KVDrVu35uc//zmHHHII06ZN495772XgwIH07t2bCy64wInCbDvlpFAgd9xxB5WVlcyYMYPf//73LFq0iKuuuornn3+ep556ijlz5gDQtm1bevXqxTPPPAPAX/7yF4YOHUrz5s0L2qT1ypUr6d69Oy+++CK77bYbEydO5Pnnn6eqqoqysjLuu+++Am0ZM2vImnydQqn8/ve/5+GHHwbg3Xff5Z577qGiooI99tgDSNo6ev311zPdEydO5Mgjj+T+++/noosuKniT1mVlZXzzm98E4Omnn6ayspIBAwYA8Nlnn7HnnntubnIza6KcFOpRdTNMlZWTeeSRv3PzzdNo0WJnLriggh12+DIffjiXGTOgf40WR0488URGjx7Nhx9+SGVlJUcddRQrV67c5iatd9hhh8xlKYDVq1dnulu0aEFZWVlm+hEjRvDLX/5ya1bbzJoQXz4qgBUrPqZNm/a0aLEzCxbMY9asF1iz5jMqKyezfPky1q5dm2mqGpLr+wMHDuSHP/wh3/jGNygrK6uXJq3Ly8upqqpiw4YNvPvuu0yfnrsl8qOPPpoHH3yQ999PXm3x4Ycf8vbbb2/rZjCzRqjJlxTq6xbSLXHoocfx0EN/4IwzetKp00F07z6I3XfvwPnnj+Hccw+lvLwDffv23agyt/pFO9UVwbDtTVpfeumldO7cmR49etC9e/daG+Xr2rUr1157LcceeywbNmygefPm3HzzzXTq1KnetolZU5Rvo6vQeBpeddPZ9ahGKLWqefmoqXHT2dZg1XPT2Y01KWyu6WxfPjIzswwnBTMzy2iSSaExXxJr7LztzRq3giUFSftK+oekuZJmS/ph2n+MpEWSqtLP8VnTjJb0pqTXJA3dmuW2aNGCZcuW+eBUAhHBsmXLaNGiRalDMbOtVMi7j9YBl0XEPyW1ASolPZUO+21EjM0eWVJXYDjQDdgb+LukAyNii9pb6NixIwsXLmTp0qX1sApb5oMP8htv7tzCxlFKLVq0oGPHjqUOw8y2UsGSQkQsAZak3Z9Kmgvss5lJTgLuj4g1wHxJbwIDgWlbstzmzZvTuXPnrYx623Ttmt94LsSYWUNVlDoFSeVAH+DFtNf3Jc2UdIek9mm/fYB3syZbSI4kImmkpBmSZpSiNGBm1pTllRQkdd/aBUhqDTwEXBoRnwC3AgcAvUlKEr+pHjXH5JucU0fEuIjoHxH9q9sRMjOz+pFvSeEPkqZLukhSu3xnLqk5SUK4LyL+DBAR70XE+ojYAIwnuUQESclg36zJOwKL812WmZltu7zqFCLicEldgHOAGZKmA3dGxFO1TSNJwO3A3Ii4Pqt/h7S+AeBkYFba/RgwQdL1JBXNXYDcjfWYmTUyymrCZnOioqKgcdQl74rmiHhD0k+BGcDvgT7pgf/K6lJADV8BzgRelVTd1OeVwBmSepNcGloAXJDOf7akScAckjuXLt7SO4/MzGzb5JUUJPUEvgt8HXgKOCG91XRvkruDNkkKEfEcuesJ/lrbciLiOuC6fGIyM7P6l29J4SaS6/9XRsRn1T0jYnFaejAzsyYg36RwPPBZ9eUcSc2AFhGxKiLuKVh0ZmZWVPneffR3oGXW953TfmZm1oTkmxRaRMSK6i9p986FCcnMzEol36SwUlLmtV2S+gGfbWZ8MzNrhPKtU7gUeEBS9cNkHYDTCxOSmZmVSr4Pr70k6cvAQSS3mc6LiLUFjczMzIpuS1pJHQCUp9P0kURE/KkgUZmZWUnk+/DaPSSN2FUB1U8ZB+CkYGbWhORbUugPdA2/zszMrEnL9+6jWcD/KWQgZmZWevmWFHYH5qSto66p7hkRJxYkKjMzK4l8k8KYQgZhZmYNQ763pD4jqRPQJSL+LmlnoKywoZmZWbHl+zrO84EHgdvSXvsAjxQqKDMzK418K5ovJnlpzieQvHAH2LNQQZmZWWnkmxTWRMTn1V8k7UDynIKZmTUh+SaFZyRdCbSUdLMq/s8AAA4ESURBVAzwAPCXzU0gaV9J/5A0V9JsST9M++8q6SlJb6R/22dNM1rSm5JekzR0a1fKzMy2Tr5JYRSwFHiV5J3KfwXqeuPaOuCyiDgYGARcLKlrOq+nI6IL8HT6nXTYcKAbcBxwiyRXZpuZFVG+dx9tIHkd5/h8ZxwRS4AlafenkuaSVFCfBFSko90NTAauSPvfHxFrgPmS3gQGkrwD2szMiiDfto/mk6MOISL2z3P6cqAP8CKwV5owiIglkqorrPcBXsiabGHar+a8RgIjAfbbb798Fm9mZnnakraPqrUATgV2zWdCSa2Bh4BLI+ITSbWOmqNfrkQ0DhgH0L9/f1d2m5nVo7zqFCJiWdZnUUTcABxV13SSmpMkhPsi4s9p7/ckdUiHdwDeT/svBPbNmrwjsBgzMyuafB9e65v16S/pQqBNHdMIuB2YGxHXZw16DBiRdo8AHs3qP1zSTpI6A12A6VuwLmZmto3yvXz0m6zudcAC4LQ6pvkKcCbwqqSqtN+VwK+ASZLOBd4huRRFRMyWNAmYky7j4ohYv+lszcysUPK9++jILZ1xRDxH7noCgKNrmeY64LotXZaZmdWPfO8++tHmhte4PGRmZo3Ultx9NIDkuj/ACcCzwLuFCMrMzEpjS16y0zciPgWQNAZ4ICLOK1RgZmZWfPk2c7Ef8HnW98+B8nqPxszMSirfksI9wHRJD5M8UHYy8KeCRWVmZiWR791H10n6b2Bw2uu7EfFy4cIyM7NSyPfyEcDOwCcR8TtgYfqAmZmZNSH5PtF8FUlLpqPTXs2BewsVlJmZlUa+JYWTgROBlQARsZg6mrkwM7PGJ9+k8HlEBGmrpZJaFS4kMzMrlXyTwiRJtwHtJJ0P/J0teOGOmZk1DnXefZS2djoR+DLwCXAQ8POIeKrAsZmZWZHVmRQiIiQ9EhH9ACcCM7MmLN/LRy9IGlDQSMzMrOTyfaL5SOBCSQtI7kASSSGiZ6ECMzOz4ttsUpC0X0S8A3ytSPGYmVkJ1VVSeISkddS3JT0UEd8sRlBmZlYaddUpZL85bf9CBmJmZqVXV1KIWrrrJOkOSe9LmpXVb4ykRZKq0s/xWcNGS3pT0muShm7JsszMrH7Udfmol6RPSEoMLdNu+KKieZfNTHsXcBObNrH924gYm91DUldgONAN2Bv4u6QDI2J9fqthtm00eXLe40ZFRcHiMCu1zSaFiCjb2hlHxLOSyvMc/STg/ohYA8yX9CYwEJi2tcu3hmWyJuc1XkVUFDQOM9u8LWk6u758X9LM9PJS+7TfPmz8vueFab9NSBopaYakGUuXLi10rGZm25ViJ4VbgQOA3sAS4Ddpf+UYN2cdRkSMi4j+EdF/jz32KEyUZmbbqaImhYh4LyLWR8QGkgb1BqaDFgL7Zo3aEVhczNjMzKzISUFSh6yvJwPVdyY9BgyXtFP6RrcuwPRixmZmZvk3c7HFJP0XUAHsLmkhcBVQIak3yaWhBcAFABExW9IkYA6wDrjYdx6ZmRVfwZJCRJyRo/ftmxn/OuC6QsVjZmZ1K8XdR2Zm1kA5KZiZWYaTgpmZZTgpmJlZhpOCNWlSfh8zSzgpmJlZhpOCmZllOCmYmVmGk4KZmWU4KZiZWYaTgpmZZTgpmJlZRsEaxLPa5fs+YL8L2MyKzSUFMzPLcFIwM7MMJwUzM8twUjAzs4yCJQVJd0h6X9KsrH67SnpK0hvp3/ZZw0ZLelPSa5KGFiouMzOrXSFLCncBx9XoNwp4OiK6AE+n35HUFRgOdEunuUVSWQFjMzOzHAr5juZnJZXX6H0SUJF23w1MBq5I+98fEWuA+ZLeBAYC0woVn5k1fL59u/iKXaewV0QsAUj/7pn23wd4N2u8hWk/MzMrooZS0ZzrNSeRc0RppKQZkmYsXbq0wGGZmW1fip0U3pPUASD9+37afyGwb9Z4HYHFuWYQEeMion9E9N9jjz0KGqyZ2fam2EnhMWBE2j0CeDSr/3BJO0nqDHQBphc5NjOz7V7BKpol/RdJpfLukhYCVwG/AiZJOhd4BzgVICJmS5oEzAHWARdHxPpCxZYVZH7jRc4rWWZmTU4h7z46o5ZBR9cy/nXAdYWKx8zM6tZQKprNzKwBcFIwM7MMv0+hKXDdiJnVE5cUzMwswyWFPOjqPM/Ecz9vZ2Y15Fu45R8FDcNycEnBzMwyXFKwRsmlN7PCcEnBzMwynBTMzCzDScHMzDJcp2BmVsP2XGflkoKZmWU4KZiZWYaTgjUsUn4fMysIJwUzM8twUjAzswzffbQdyf+OCoirmt5dFWZWNycFy8mtcTd9kzU5r/EqoqKgcVjDUpKkIGkB8CmwHlgXEf0l7QpMBMqBBcBpEfFRKeIzM9telbKkcGREfJD1fRTwdET8StKo9PsVpQnNzLbG9vzQV1PRkCqaTwLuTrvvBoaVMBYzs+1SqUoKATwpKYDbImIcsFdELAGIiCWS9sw1oaSRwEiA/fbbr1jxmm2/tuS5kDEFi2K7Ueq6nlIlha9ExOL0wP+UpHn5TpgmkHEA/fv3dxnUzKwelSQpRMTi9O/7kh4GBgLvSeqQlhI6AO+XIraGJO8zhoJGYWbbk6LXKUhqJalNdTdwLDALeAwYkY42Ani02LGZmW3vSlFS2At4WMl1yh2ACRHx/yS9BEySdC7wDnBqCWIzM9uuFT0pRMS/gF45+i8Dji52PGZm9oWGdEuqmZmVmJu5sG2iyZPzGu8fhQ2jYXJbIdYIuaRgZmYZTgpmZpbhpGBmZhlOCmZmluGKZjNr9Pz0f/1xScHMzDKcFMzMLMOXj8waCT/2YMXgkoKZmWU4KZiZWYaTgpmZZTgpmJlZhiuazUpMV+f7DuT8apDdSKFtC5cUzMwsw0nBzMwynBTMzCyjwdUpSDoO+B1QBvwxIn5V4pDMNuJ2dqwpa1AlBUllwM3A14CuwBmSupY2KjOz7UeDSgrAQODNiPhXRHwO3A+cVOKYzMy2G4oG1FCKpG8Bx0XEeen3M4FDIuL7WeOMBEamXw8CXit6oIndgQ9KtOz61FTWA7wuDVVTWZemsh4AnSJij1wDGlqdQq4btjfKWhExDhhXnHBqJ2lGRPQvdRzbqqmsB3hdGqqmsi5NZT3q0tAuHy0E9s363hFYXKJYzMy2Ow0tKbwEdJHUWdKOwHDgsRLHZGa23WhQl48iYp2k7wN/I7kl9Y6ImF3isGpT8ktY9aSprAd4XRqqprIuTWU9NqtBVTSbmVlpNbTLR2ZmVkJOCmZmluGkYBuRVC5pVi3DJktq8rfkFZukEyWNqmOcCkmP1zLsUkk7Fya64mgM6yDpr5Lapd0r0r+1/l4aKycFsxKLiMe2sY2vS4EGfUDNQ4Nfh4g4PiKWlzqOQnNSqIWksyTNlPSKpHsknSDpRUkvS/q7pL3S8cZIuiM9i/6XpEsaWNydJD2d9nta0n7peHelT5BXT7cix7xaSro/nXYi0LKIq5IdR7mkeZL+KGmWpPskfVXS85LekDQw/UxN989USQel006R1DtrXs9L6tnAYj9b0k3p+AdIekHSS5J+UWO/tJb0YDq/+5S4BNgb+Iekorw3J891GiPpx1nTzEqnayXpifT/c5ak00uxDrWs139U/34l/VbS/6TdR0u6V9ICSbuXKr6iiQh/anyAbiTNZ+yeft8VaM8Xd2udB/wm7R4DTAV2InkMfhnQvAHF/RdgRPr9HOCRtPsu4FtZ065I/5YDs9LuH5HcFgzQE1gH9C/BepWny+5BciJTCdxB8gT8ScAjwC7ADun4XwUeSrtHADek3QcCMxpg7GcDN6XjPw6ckXZfmLVfKoCPSR7obAZMAw5Phy2o3ucNaJ3GAD/OmmZWOt03gfFZ/duWYh1qWa9BwANp9xRgOtAcuAq4IDvGXL+XpvJxSSG3o4AHI+IDgIj4kOTH+DdJrwKXkxyAqz0REWvS8d8H9ip2wKlccR8KTEiH3wMcvgXzOwK4N53XTGBm/YW6xeZHxKsRsQGYDTwdya/yVZIfZlvggfT67m/5Yv88AHxDUnOSpHhXsQOn7tizHUoSM3yx36pNj4iF6XyqckxbTFuyTtleBb4q6deSBkfEx0WINV+VQD9JbYA1JIm3PzCYJElsF5wUchObvhD3RpKzuR4kZw0tsoatyepeT+keCswVd03Vw9eR7n9JAnasY/xSy97GG7K+byDZ3tcA/4iI7sAJpPsnIlYBT5GcwZ7GpgfaYqgr9q2ZTyn/z6Dudcr8f6Wq98frQD+S5PBLST8vfKj5iYi1JKWB75KU/qcARwIHAHNLF1lxOSnk9jRwmqTdACTtSnImuigdPqJUgdUhV9xTSZoLAfgO8FzavYDkxwnJAbN5jvk9m06DpO4kl5Aaquz9c3aNYX8Efg+8lJaeGrIXSC6xwBf7rS6fAm0KE85WWwD0BZDUF+icdu8NrIqIe4Gx1ePQcNbhWeDH6d8pJJfwqtJS0HbBSSGHSJrWuA54RtIrwPUk10gfkDSFBtp8bi1xXwJ8V9JM4Ezgh+no44EhkqYDhwArc8zyVpLKzZnAf5BcY22o/i/JmefzJE2kZEREJfAJcGcpAttClwI/SvdLB5J6hLqMA/67lJW0OTwE7CqpCvge8HravwcwPe3/E+DatH9DWYcpJNt9WkS8B6xmO7p0BG7mwrYD6dnpZODL6TXwBkvJvfqfRURIGk5S6ewXTVnRNKgG8czqm6SzSEpPP2roCSHVD7gpredZTlI5blY0LimYmVmG6xTMzCzDScHMzDKcFMzMLMNJwczMMpwUzMws4/8D67dNjO5UT5QAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "genres = ['news', 'religion', 'hobbies', 'government', 'adventure']\n",
    "modals = ['can', 'could', 'may', 'might', 'must', 'will']\n",
    "cfdist = nltk.ConditionalFreqDist((genre, word)\n",
    "                                  for genre in genres\n",
    "                                  for word in nltk.corpus.brown.words(categories=genre)\n",
    "                                  if word in modals)\n",
    "counts = {}\n",
    "for genre in genres:\n",
    "    counts[genre] = [cfdist[genre][word] for word in modals]\n",
    "    \n",
    "bar_chart(genres, modals, counts)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# NetworkX"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "import networkx as nx\n",
    "import matplotlib\n",
    "from nltk.corpus import wordnet as wn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "def traverse(graph, start, node):\n",
    "    graph.depth[node.name] = node.shortest_path_distance(start)\n",
    "    for child in node.hyponyms():\n",
    "        graph.add_edge(node.name, child.name)\n",
    "        traverse(graph, start, child)\n",
    "\n",
    "def hyponym_graph(start):\n",
    "    G = nx.Graph()\n",
    "    G.depth = {}\n",
    "    traverse(G, start, start)\n",
    "    return G\n",
    "\n",
    "def graph_draw(graph):\n",
    "    nx.draw(graph,\n",
    "            node_size=[16 * graph.degree(n) for n in graph],\n",
    "            node_color=[graph.depth[n] for n in graph],\n",
    "            with_labels= False)\n",
    "    matplotlib.pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dog = wn.synset('cat.n.01')\n",
    "graph = hyponym_graph(dog)\n",
    "graph_draw(graph)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 奇异值分解 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "from numpy import linalg\n",
    "from numpy import array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = array([[4, 0], [3, -5]])\n",
    "u, s, vt = linalg.svd(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.4472136 , -0.89442719],\n",
       "       [-0.89442719,  0.4472136 ]])"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "u"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([6.32455532, 3.16227766])"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.70710678,  0.70710678],\n",
       "       [-0.70710678, -0.70710678]])"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
